# ifndef _INTERPOLATIONSTRUCT_H
# define _INTERPOLATIONSTRUCT_H

// 实现 Bspline 及 ppForm 所需要的库函数
# define _USE_MATH_DEFINES
# include<iostream>
# include<vector>
# include<algorithm>
# include<Eigen/Dense>
# include"Function.h"
# include<cmath>

// 插值类型
# define S01 1    // 线性插值
# define S32 3    // 三次插值
# define S21Car 2 // Cardinal S21 二次插值
# define S32Car 4 // Cardinal S32 三次插值

// S32 的边值条件
# define Complete   1
# define Specified  2
# define Nature     3
# define NotAKnot   4
# define Periodic   5

// 节点单元
struct point
{
    double x;
    double y;
};

// 用于排序的判断函数
bool xUpsort(struct point p1, struct point p2)
{
    return (p1.x < p2.x);
}

// 用于打印向量元素
void PrintVec(std::vector<double> vec)
{
    for (int i = 0; i < vec.size(); i++)
    {
        std::cout << vec[i] << " ";
    }
    std::cout << std::endl;
}

# else
// Do nothing.
# endif